PivotGrid - KBN - Add ARIA attributes to area fields#34341
PivotGrid - KBN - Add ARIA attributes to area fields#34341aleksei-semikozov wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR enhances PivotGrid (and the PivotGrid Field Chooser) keyboard-navigation accessibility by exposing area field containers as menubars and individual fields as menu items with localized ARIA labels, plus accompanying unit/e2e coverage.
Changes:
- Update PivotGrid FieldsArea markup to conditionally expose populated areas as a labelled menubar while keeping empty areas presentational.
- Add per-field
role="menuitem"and computedaria-labelthat reflects caption + sort/header-filter state. - Add new localization message keys and extend QUnit/Jest/TestCafe coverage for the updated ARIA semantics.
Reviewed changes
Copilot reviewed 43 out of 43 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/devextreme/testing/tests/DevExpress.ui.widgets.pivotGrid/pivotGrid.markup.tests.js | Updates accessibility markup assertions for menubar behavior and empty filter-area behavior. |
| packages/devextreme/js/localization/messages/ar.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/bg.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/ca.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/cs.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/da.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/de.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/el.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/en.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/es.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/fa.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/fi.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/fr.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/hi.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/hu.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/it.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/ja.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/ko.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/lt.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/lv.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/nb.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/nl.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/pl.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/pt.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/pt-PT.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/pt-BR.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/ro.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/ru.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/sl.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/sv.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/tr.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/uk.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/vi.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/zh.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/zh-tw.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/zh-Hans.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/localization/messages/zh-CN.json | Adds new PivotGrid ARIA message keys. |
| packages/devextreme/js/__internal/grids/pivot_grid/fields_area/m_fields_area.ts | Implements conditional menubar exposure for populated PivotGrid field areas and presentational markup for empty areas. |
| packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser.ts | Applies conditional menubar role + aria-label to FieldChooser area containers only when fields are present. |
| packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.ts | Sets role="menuitem" and computed aria-label on rendered field items. |
| packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/a11y.ts | Introduces helper for composing localized field aria-labels with sort/filter state. |
| packages/devextreme/js/__internal/grids/pivot_grid/field_chooser/a11y.test.ts | Adds Jest coverage for aria-label composition logic. |
| e2e/testcafe-devextreme/tests/common/pivotGrid/kbn/fields.ts | Adds E2E assertions for menubar/menuitem roles and composed field aria-labels. |
|
Bug: stale
if (!isVisible) {
return;
}
...
tableElement.attr('role', 'menubar').attr('aria-label', ...); // or 'presentation' + removeAttrSince _tableElement is reused across re-renders (only innerHTML/style get cleared), calling e.g. pivotGrid.option('fieldPanel.showRowFields', false) after the row area had fields leaves the table with the old role="menubar" + aria-label, because the function returns early before the reset code runs. Fix: reset before the early return: |
|
Good catch, thanks! Fixed in 745ab50. |
No description provided.